package com.hongawen;

import com.hongawen.common.pojo.User;

/**
 *  return 前执行的 finally 块内，对数据的修改效果对于引用类型和值类型会不同
 * @author hongawen
 * @version 1.0.0
 * @date 2021年09月02日 10:13
 */
public class TestFinally {

    public static void main(String[] args) {
        //finally 内的修改效果不起作用
        System.out.println(testBaseData(1));
        //finally 内的修改效果起了作用
        System.out.println( testArrayData(new int[]{5})[0]);
        //finally 内的修改效果起了作用
        System.out.println(testObjectData(new User("小红",31,"male")));
    }


    /**
     * 测试基本类型数值
     */
    private static int testBaseData(int data){
        try{
            return data;
        }finally {
            data = data + 1 ;
            System.out.println("testBaseData执行finally");
        }
    }

    /**
     * 测试数组
     */
    private static int[] testArrayData(int[] data){
        try{
            return data;
        }finally {
            data[0]=data[0]+1;
            System.out.println("testArrayData执行finally");
        }
    }

    /**
     * 测试实体对象
     */
    private static User testObjectData(User data){
        try{
            return data;
        }finally {
            data.setAge(data.getAge()+1);
            System.out.println("testArrayData执行finally");
        }
    }


}
